/**
 * @copyright 2017 sinping.com 北京芯平科技股份有限公司. All rights reserved.
 * 本内容仅限于北京芯平科技股份有限公司内部传阅，禁止外泄以及用于其他的商业目的.
 */
package com.sinping.qh.service.auth;

import com.sinping.qh.domain.auth.Resource;
import com.sinping.qh.dto.auth.OnlineUserDTO;
import com.sinping.qh.dto.auth.UserSessionDTO;
import com.sinping.qh.domain.auth.User;

import java.util.List;
import java.util.Map;

/**
 * 访问redis
 *
 * @author guojie
 * @create 2017/12/21
 */
public interface ISessionService {


    /**
     *  给token 生成   UserSessionDTO
     * @param token
     * @return
     */
    public UserSessionDTO createSessionByToken(String token, User user);

    /**
     *  根据token    获取 UserSession 数据对象
     * @param token
     * @return
     */
     public UserSessionDTO getSessionByToken(String token);

    /**
     * 根据token     删除 UserSession 数据对象
     * @param token
     * @return
     */
     public  Long  deleteSessionByToken(String token);


    /**
     *  向redis 存储 Dto 对象
     * @param userSessionDto
     * @return
     */
     public int saveSessionToRedis(UserSessionDTO userSessionDto);
    /**
     * 返 回 处理 url 与 perm 的关系
     *  key=url value=[perm1,perm2,......]
     * @param resources  资源对象
     * @return
     */
    public Map<String, String[]> getUrlResourceAndPermission(List<Resource> resources);
    /**
     * 获得当前在线用户
     * @author runjiaxue
     * @return
     */
    public List<OnlineUserDTO> selectOnlineUser();


    /**
     * 根据userid     删除 UserSession 数据对象
     * @param userid
     * @return
     */
    public  Long  deleteSessionAndTokenByUserid(String userid);

}
